package moo.stargalaxy_bukkit.api;

import com.alibaba.fastjson.JSONObject;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import com.sun.org.apache.xpath.internal.operations.And;
import moo.stargalaxy_bukkit.StarGalaxy_Bukkit;
import moo.stargalaxy_bukkit.config.Config;
import moo.stargalaxy_bukkit.network.BukkitNetWork;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Map;
import static org.bukkit.Bukkit.spigot;

public class CmdBukkit implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (command.getName().equals("sgs")) {
            if (args.length == 0 && sender.isOp()) {
                sender.sendMessage("§f┃ ");
                sender.sendMessage("§f┃  §6§lStarGalaxy §c(群星插件帮助) ");
                sender.sendMessage("§f┃  §8Version §71.0.0");
                sender.sendMessage("§f┃ ");
                sender.sendMessage("§f┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
                sender.sendMessage("§f┃ ");
                sender.sendMessage("§f┃  §8● §7传送至蹦极大厅服:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs hub");
                sender.sendMessage("§f┃  §8● §7重载配置并重连控制台:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs reload");
                sender.sendMessage("§f┃  §8● §7发送服务器全体消息文本:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs broadcast §e<消息内容>");
                sender.sendMessage("§f┃  §8● §7发送特定玩家消息文本:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs sendmessage §e<玩家名字> <消息内容>");
                sender.sendMessage("§6┃ ");
                sender.sendMessage("§f┃  §8● §7传送至群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs cross §e<子服编号>");
                sender.sendMessage("§f┃  §8● §7获取服务器创建模板列表:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs template");
                sender.sendMessage("§f┃  §8● §7获取特定子服务器信息组:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs serverinfo §e<子服编号>");
                sender.sendMessage("§f┃  §8● §7获取玩家拥有服务器列表:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs userserver §e<玩家名称>");
                sender.sendMessage("§6┃ ");
                sender.sendMessage("§f┃  §8● §7创建玩家群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs createserver §e<玩家名称> <服务端模板名> [最大创建数(可空)]");
                sender.sendMessage("§f┃  §8● §7删除玩家群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs deleteserver §e<子服编号>");
                sender.sendMessage("§6┃ ");
                sender.sendMessage("§f┃  §8● §7启动群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs start §e<子服编号>");
                sender.sendMessage("§f┃  §8● §7停止群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs stop §e<子服编号>");
                sender.sendMessage("§f┃  §8● §7重启群星子服务器:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs restart §e<子服编号>");
                sender.sendMessage("§6┃ ");
                sender.sendMessage("§f┃  §8● §7设置子服务器的显示名称:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs fidedits name §e<子服编号> <新服务器名称>");
                sender.sendMessage("§f┃  §8● §7设置子服务器的最大玩家人数:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs fidedits maxplayer §e<子服编号> <最大玩家数>");
                sender.sendMessage("§6┃ ");
                sender.sendMessage("§f┃  §8● §7向蹦极端后台发送命令执行:");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs sendbccommand §e<命令内容>");
                sender.sendMessage("§f┃  §8● §7向全部子服务器发送命令(结尾带</br>视作回车):");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs sendallcommand §e<命令内容>");
                sender.sendMessage("§f┃  §8● §7向特定子服务器发送命令(结尾带</br>视作回车):");
                sender.sendMessage("§f┃  §8┗━  §a§l/Sgs sendfidcommand §e<子服编号> <命令内容>");
                sender.sendMessage("§f┃ ");
                return true;
            }
            if (args.length == 1) {
                // 重载配置和重连控制台
                if (args[0].equals("reload") && sender.hasPermission("sgs.reload")) {
                    GalaxyBukkitAPI.initGalaxy();
                    Config.loadYaml();
                    Config.loadData();
                    sender.sendMessage("§f┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
                    sender.sendMessage("§f┃ §e已重载配置并重连控制台");
                    return true;
                }
                // 返回设置中的登录服
                if (args[0].equals("hub") || args[0].equals("lobby")) {
                    if (sender.hasPermission("sgs.hub")) {
                        if (GalaxyBukkitAPI.addTpCoolDown((Player) sender)) {
                            BukkitNetWork.sendHub((Player) sender, Config.getConfiguration().getString("Server_Set.hub"));
                        }
                    } else {
                        sender.sendMessage("§7缺少所需权限: §6sgs.hub");
                    }
                    return true;
                }
                // 获取全部子服模板
                if (args[0].equals("servertemplate") || args[0].equals("template")) {
                    if (!sender.hasPermission("sgs.servertemplate")) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.servertemplate");
                        return true;
                    }
                    JSONObject data = GalaxyAPI.getServerTemplates();
                    if (!GalaxyAPI.isConnect(data)) {
                        sender.sendMessage("§c操作出现异常: §f" + data.getString("msg"));
                        return true;
                    }
                    int Tshuliang = data.getJSONObject("datas").getInnerMap().size();
                    sender.sendMessage("§7群星服务器模板数量: §c" + String.valueOf(Tshuliang));
                    // 如果不是空的列表就添加分割线方便下面显示信息格式
                    if (Tshuliang != 0) {
                        sender.sendMessage("§8——————————————————————————");
                    }
                    JSONObject datas = data.getJSONObject("datas");
                    Map<String, Object> innerMap = datas.getInnerMap();
                    for (String s : innerMap.keySet()) {
                        sender.sendMessage("§f● §7模板名: §a§l" + ((Map) innerMap.get(s)).get("目录名")
                                + "§7 (§e" + ((Map) innerMap.get(s)).get("显示名称")
                                + "§7) - 最大游戏人数: §b"
                                + ((Map) innerMap.get(s)).get("最大人数"));
                    }
                }
            }
            if (args.length == 2) {
                // 群星功能：跨入对应玩家子服务器
                if (args[0].equals("cross") && GalaxyBukkitAPI.canJoin(sender, args[1])) {
                    if (!GalaxyBukkitAPI.addTpCoolDown((Player) sender)) {
                        return true;
                    }
                    JSONObject jsonObject = GalaxyAPI.getCrossServerFid(args[1]);
                    if (!GalaxyAPI.isConnect(jsonObject)) {
                        sender.sendMessage("§c当前无法加入, 原因: §f" + jsonObject.getString("msg"));
                        return true;
                    }
                    if (!GalaxyAPI.canCross((Player) sender, jsonObject)) {
                        sender.sendMessage("§c当前无法加入, 对象: §f" + args[1]);
                        return true;
                    }
                    sender.sendMessage(Config.getConfiguration().getString("Message_Set.Cross_Delay").replaceAll("<Cross_Delaytime>", String.valueOf(Config.getTime())));
                    new BukkitRunnable() {
                        @Override
                        public void run() {
                            BukkitNetWork.sendCross((Player) sender, args[1]); // 请求蹦极端跨服操作
                        }
                    }.runTaskLater(StarGalaxy_Bukkit.getPlugin(), Config.getTime() * 20L);
                    return true;
                }
                // 群星功能：重启特定玩家子服务器
                if (args[0].equals("restart") && GalaxyBukkitAPI.canRestart(sender, args[1])) {
                    JSONObject jsonObject = GalaxyAPI.restartServer(args[1]);
                    if (GalaxyAPI.isConnect(jsonObject)) {
                        sender.sendMessage("§7已操作 §6重启子服务器 §7对象: §a" + args[1]);
                    } else {
                        sender.sendMessage("§c操作出现异常, 原因: §f" + jsonObject.getString("msg"));
                    }
                    return true;
                }
                // 群星功能：启动特定玩家子服务器
                if (args[0].equals("start") && GalaxyBukkitAPI.canRestart(sender, args[1])) {
                    JSONObject jsonObject = GalaxyAPI.startServer(args[1]);
                    if (GalaxyAPI.isConnect(jsonObject)) {
                        sender.sendMessage("§7已操作 §6启动子服务器 §7对象: §a" + args[1]);
                    } else {
                        sender.sendMessage("§c操作出现异常, 原因: §f" + jsonObject.getString("msg"));
                    }
                    return true;
                }
                // 群星功能：关闭特定玩家子服务器
                if (args[0].equals("stop") && GalaxyBukkitAPI.canRestart(sender, args[1])) {
                    JSONObject jsonObject = GalaxyAPI.stopServer(args[1]);
                    if (GalaxyAPI.isConnect(jsonObject)) {
                        sender.sendMessage("§7已操作 §6关闭子服务器 §7对象: §a" + args[1]);
                    } else {
                        sender.sendMessage("§c操作出现异常, 原因: §f" + jsonObject.getString("msg"));
                    }
                    return true;
                }
                // 计算玩家的UUID序列
                if (args[0].equals("calcuuid")) {
                    String UUID_fromt = GalaxyBukkitAPI.GetUuidv3Name(args[1], true);
                    String UUID_notfromt = GalaxyBukkitAPI.GetUuidv3Name(args[1], false);
                    sender.sendMessage("§c" + args[1] + " §7计算识别码(v3): ");
                    sender.sendMessage("§8——————————————————————————");
                    sender.sendMessage("§f● §7UUID (格式) : §e" + UUID_fromt);
                    sender.sendMessage("§f● §7UUID (无格式) : §e" + UUID_notfromt);
                    return true;
                }
                // 群星功能：获取玩家拥有的子服务器
                if (args[0].equals("userserver")) {
                    if (!sender.hasPermission("sgs.userserver")) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.userserver");
                        return true;
                    }

                    // 此方法没办法获取离线玩家UUID弃用
                    // Player player = Bukkit.getPlayer(args[1]);
                    // if(player != null){ }

                    JSONObject playerServer = GalaxyAPI.getPlayerServer(GalaxyBukkitAPI.GetUuidv3Name(args[1], true));
                    if (playerServer.containsKey("datas")) {
                        JSONObject datas = playerServer.getJSONObject("datas");
                        for (String s : datas.getInnerMap().keySet()) {
                            if (s.equals("amount")) {
                                sender.sendMessage("§c" + args[1] + " §7服务器数量: " + datas.getString("amount"));
                                // 如果不是空的列表就添加分割线方便下面显示信息格式
                                if (datas.getIntValue("amount") != 0) {
                                    sender.sendMessage("§8——————————————————————————");
                                }
                            } else {
                                JSONObject servers = datas.getJSONObject("servers");
                                Map<String, Object> innerMap = servers.getInnerMap();
                                for (String s1 : innerMap.keySet()) {
                                    sender.sendMessage("§f● §a§l" + ((Map) innerMap.get(s1)).get("子服编号") + " §7▶ ");
                                    // sender.sendMessage("§f● §7子服编号: §a" + ((Map)innerMap.get(s1)).get("子服编号"));
                                    // sender.sendMessage("§f┃ §7创建时间: " + ((Map)innerMap.get(s1)).get("创建时间")); // 十位时间戳
                                    // sender.sendMessage("§f┃ §7玩家名称: " + ((Map)innerMap.get(s1)).get("玩家名称"));
                                    sender.sendMessage("§f● §7显示名称: §f" + ((Map) innerMap.get(s1)).get("显示名称"));
                                    sender.sendMessage("§f● §7实时状态: §e" + ((Map) innerMap.get(s1)).get("状态文本"));
                                    sender.sendMessage("§f● §7实时流畅度: §b" + ((Map) innerMap.get(s1)).get("实时流畅度") + "§7 Tps");
                                    sender.sendMessage("§f● §7限制流畅度: §b" + ((Map) innerMap.get(s1)).get("限制流畅度") + "§7 Tps");
                                    sender.sendMessage("§f● §7最大人数: §e" + ((Map) innerMap.get(s1)).get("最大人数"));
                                    sender.sendMessage("§f● §7在线人数: §a" + ((Map) innerMap.get(s1)).get("在线人数"));
                                }
                            }
                        }
                    }
                    return true;
                }
                // 群星功能：获取特定子服务器详细信息
                if (args[0].equals("serverinfo")) {
                    if (!sender.hasPermission("sgs.serverinfo")) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.serverinfo");
                        return true;
                    }
                    JSONObject serverInfo = GalaxyAPI.getServerInfo(args[1]);
                    if (GalaxyAPI.isConnect(serverInfo)) {
                        Map o = serverInfo.getJSONObject("datas").getObject("servers", Map.class);
                        sender.sendMessage("§f● §a§l" + o.get("子服编号") + " §7▶ ");
                        sender.sendMessage("§8——————————————————————————");
                        // sender.sendMessage("§2创建时间: " + o.get("创建时间")); // 十位时间戳
                        // sender.sendMessage("§2玩家名称: " + o.get("玩家名称"));
                        sender.sendMessage("§f● §7显示名称: §f" + o.get("显示名称"));
                        sender.sendMessage("§f● §7实时状态: §e" + o.get("状态文本"));
                        sender.sendMessage("§f● §7实时流畅度: §b" + o.get("实时流畅度") + "§7 Tps");
                        sender.sendMessage("§f● §7限制流畅度: §b" + o.get("限制流畅度") + "§7 Tps");
                        sender.sendMessage("§f● §7最大人数: §e" + o.get("最大人数"));
                        sender.sendMessage("§f● §7在线人数: §a" + o.get("在线人数"));
                        sender.sendMessage("§f● §7连接地址: §a" + o.get("连接地址") + ":" + o.get("分配端口"));
                    } else {
                        sender.sendMessage("§c操作出现异常: §f" + serverInfo.getString("msg"));
                    }
                }
                // 群星功能：删除特定群星子服务器
                if ((args[0].equals("deleteserver") || args[0].equals("delete")) && GalaxyBukkitAPI.canDelete((Player) sender, args[1])) {
                    JSONObject jsonObject = GalaxyAPI.deleteServer(args[1]);
                    if (GalaxyAPI.isConnect(jsonObject)) {
                        sender.sendMessage("§7已操作 §6删除服务器 §7对象: §a" + args[1]);
                    } else {
                        sender.sendMessage("§c操作出现异常: §f" + jsonObject.getString("msg"));
                    }
                    return true;
                }
            }
            if (args.length == 3) {
                // 群星功能：创建特定玩家子服务器 (无数量参数)
                if (args[0].equals("createserver") || args[0].equals("create")) {
                    if (!sender.hasPermission("sgs.createserver")) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver");
                        return true;
                    }
                    if (Bukkit.getPlayer(args[1]) == null) {
                        sender.sendMessage("§7此玩家当前离线: §f" + args[1]);
                    }
                    Player player = Bukkit.getPlayer(args[1]);
                    // 先判断有没有通过权限设置数量，没有的话就从配置中取得默认数量作为创建数量
                    int canCreateServer = GalaxyBukkitAPI.getCanCreateServer(player);
                    if (canCreateServer == 0) {
                        canCreateServer = Config.getConfiguration().getInt("Server_Set.Default_Snumber");
                    }
                    if (!GalaxyBukkitAPI.canUseTemplates(player, args[2])) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver.templates.[模板名字/*]");
                        return true;
                    }
                    JSONObject server = GalaxyAPI.createServer(player.getUniqueId(), player.getName(), args[2], canCreateServer);
                    if (GalaxyAPI.isConnect(server)) {
                        sender.sendMessage("§7已操作 §6创建服务器 §8(" + player.getName() + "§8) §7分配识别码: §a" + server.getJSONObject("datas").get("server_fid"));
                    } else {
                        sender.sendMessage("§c操作出现异常: §f" + server.getString("msg"));
                    }
                    return true;
                }

//                // 群星功能：创建特定玩家子服务器 (无数量参数) - 备份优化前原格式
//                if(args[0].equals("createserver-Back") || args[0].equals("create-Back")){
//                    if(!sender.hasPermission("sgs.createserver")){
//                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver");
//                        return true;
//                    }
//                    if(Bukkit.getPlayer(args[1]) != null){
//                        Player player = Bukkit.getPlayer(args[1]);
//                        int canCreateServer = GalaxyBukkitAPI.getCanCreateServer(player);
//                        if(canCreateServer == 0){
//                            canCreateServer = Config.getConfiguration().getInt("Server_Set.Default_Snumber");
//                        }
//                        if(GalaxyBukkitAPI.canUseTemplates(player, args[2])){
//                            JSONObject server = GalaxyAPI.createServer(player.getUniqueId(), player.getName(), args[2], canCreateServer);
//                            if(GalaxyAPI.isConnect(server)){
//                                sender.sendMessage("§c已执行 §6创建服务器 §c操作.服务器识别码: §a" + server.getJSONObject("datas").get("server_fid"));
//                            } else {
//                                sender.sendMessage("§c操作出现异常: §a" + server.getString("msg"));
//                            }
//                            return true;
//                        }else {
//                            sender.sendMessage("§7缺少所需权限: §6sgs.createserver.templates.[模板名字/*]");
//                        }
//                    } else {
//                        sender.sendMessage("§7此玩家当前离线: §e" + args[1]);
//                    }
//                    return true;
//                }
                // return true;
            }

            if (args.length == 4) {
                // 群星功能：创建特定玩家子服务器 (带数量参数)
                if (args[0].equals("createserver") || args[0].equals("create")) {
                    if (!sender.hasPermission("sgs.createserver")) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver");
                        return true;
                    }
                    if (Bukkit.getPlayer(args[1]) == null) {
                        sender.sendMessage("§7此玩家当前不在线: §f" + args[1]);
                        return true;
                    }
                    Player player = Bukkit.getPlayer(args[1]);
                    if (!GalaxyBukkitAPI.canUseTemplates(player, args[2])) {
                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver.templates.[模板名字/*]");
                        return true;
                    }
                    JSONObject server = GalaxyAPI.createServer(player.getUniqueId(), player.getName(), args[2], Integer.parseInt(args[3]));
                    if (GalaxyAPI.isConnect(server)) {
                        sender.sendMessage("§7已操作 §6创建服务器 §8(" + player.getName() + "§8) §7分配识别码: §a" + server.getJSONObject("datas").get("server_fid"));
                    } else {
                        sender.sendMessage("§c操作出现异常: §f" + server.getString("msg"));
                    }
                    return true;
                }
//                // 群星功能：创建特定玩家子服务器 (带数量参数) - 备份优化前原格式
//                if(args[0].equals("createserver-Back") || args[0].equals("create-Back")){
//                    if(!sender.hasPermission("sgs.createserver")){
//                        sender.sendMessage("§7缺少所需权限: §6sgs.createserver");
//                        return true;
//                    }
//                    if(Bukkit.getPlayer(args[1]) != null){
//                        Player player = Bukkit.getPlayer(args[1]);
//                        if(GalaxyBukkitAPI.canUseTemplates(player, args[2])){
//                            JSONObject server = GalaxyAPI.createServer(player.getUniqueId(), player.getName(), args[2], Integer.parseInt(args[3]));
//                            if(GalaxyAPI.isConnect(server)){
//                                sender.sendMessage("§c已执行 §6创建服务器 §c操作.服务器识别码: §a" + server.getJSONObject("datas").get("server_fid"));
//                            } else {
//                                sender.sendMessage("§c操作出现异常: §a" + server.getString("msg"));
//                            }
//                            return true;
//                        } else {
//                            sender.sendMessage("§7缺少所需权限: §6sgs.createserver.templates.[模板名字/*]");
//                        }
//                    } else {
//                        sender.sendMessage("§7此玩家当前离线: §e" + args[1]);
//                    }
//                    return true;
//                }


                // 群星功能：修改子服务器信息 (群星显示别名)
                if (args[0].equals("fidedits")) {
                    if (args[1].equals("name")) {
                        if (!sender.hasPermission("sgs.fidedits.name." + args[2]) || !sender.hasPermission("sgs.fidedits.name.*")) {
                            sender.sendMessage("§7缺少所需权限: §6sgs.fidedits.name." + args[2] + " §7或 §6sgs.fidedits.name.*");
                            return true;
                        }
                        JSONObject jsonObject = GalaxyAPI.gitFixServerSpecialData(args[2], "name", args[3]);
                        if (GalaxyAPI.isConnect(jsonObject)) {
                            sender.sendMessage("§7已操作 §6修改显示名称 §7对象: §a" + args[2] + "§7 新定义: §e" + args[3]);
                        } else {
                            sender.sendMessage("§c操作出现异常: §f" + jsonObject.getString("msg"));
                        }
                        return true;
                    }
                    // 群星功能：修改子服务器信息 (最大玩家进入人数)
                    if (args[1].equals("maxplayer")) {
                        if (!sender.hasPermission("sgs.fidedits.name." + args[2]) || !sender.hasPermission("sgs.fidedits.name.*")) {
                            // sender.sendMessage("§7缺少所需权限: §6sgs.fidedits.[name/maxplayer].子服编号/*");
                            sender.sendMessage("§7缺少所需权限: §6sgs.fidedits.maxplayer." + args[2] + " §7或 §6sgs.fidedits.maxplayer.*");
                            return true;
                        }
                        JSONObject jsonObject = GalaxyAPI.gitFixServerSpecialData(args[2], "maxplayer", args[3]);
                        if (GalaxyAPI.isConnect(jsonObject)) {
                            sender.sendMessage("§7已操作 §6修改最大人数 §7对象: §a" + args[2] + "§7 新定义: §e" + args[3]);
                        } else {
                            sender.sendMessage("§c操作出现异常: §f" + jsonObject.getString("msg"));
                        }
                        return true;
                    }
                    return true;
                }


            }

            // 拓展：特定子服发送命令执行
            // sgs sendfidcommand 子服编号 内容
            if (args[0].equals("sendfidcommand") || args[0].equals("sfidc")) {
                if (args.length < 3) {
                    sender.sendMessage("§c操作出现异常: §f命令格式错误");
                    return true;
                }
                if (!sender.hasPermission("sgs.sendfidcommand.*") && !sender.hasPermission("sgs.sendfidcommand." + args[1])) {
                    sender.sendMessage("§7缺少所需权限: §6sgs.sendfidcommand.子服编号/*");
                    return true;
                }

                // 判断是否后方命令内容包含空格内容,组合成一体消息
                String ZuHe_Commandtext = args[2];
                if(args.length > 3) {
                    StringBuilder message = new StringBuilder();
                    for (int i = 0; i < args.length; i++) {
                        if (i >= 2) {
                            message.append(" ").append(args[i]);
                        }
                    }
                    ZuHe_Commandtext = message.toString().trim();
                }

                JSONObject server = GalaxyAPI.sendFidserverCommand(args[1], ZuHe_Commandtext);
                if (GalaxyAPI.isConnect(server)) {
                    sender.sendMessage("§7已操作 §6特定子服命令执行 §7对象: §a" + args[1] + "§7 命令: §e" + ZuHe_Commandtext);
                } else {
                    sender.sendMessage("§c操作出现异常: §f" + server.getString("msg"));
                }

                return true;
            }

            // 拓展：全部子服发送命令执行
            // sgs sendallcommand 内容
            if (args[0].equals("sendallcommand") || args[0].equals("sallc")) {
                if (args.length < 2) {
                    sender.sendMessage("§c操作出现异常: §f命令格式错误");
                    return true;
                }
                if (!sender.hasPermission("sgs.sendallcommand")) {
                    sender.sendMessage("§7缺少所需权限: §6sgs.sendallcommand");
                    return true;
                }

                // 判断是否后方命令内容包含空格内容,组合成一体消息
                String ZuHe_Commandtext = args[1];
                if(args.length > 2) {
                    StringBuilder message = new StringBuilder();
                    for (int i = 0; i < args.length; i++) {
                        if (i >= 1) {
                            message.append(" ").append(args[i]);
                        }
                    }
                    ZuHe_Commandtext = message.toString().trim();
                }

                JSONObject server = GalaxyAPI.sendAllserverCommand(ZuHe_Commandtext);
                if (GalaxyAPI.isConnect(server)) {
                    sender.sendMessage("§7已操作 §6全部子服命令执行§7 命令: §e" + ZuHe_Commandtext);
                } else {
                    sender.sendMessage("§c操作出现异常: §f" + server.getString("msg"));
                }

                return true;
            }

            // 发送玩家文本消息功能
            if(args[0].equals("sendmessage") && Bukkit.getPlayer(args[1]) != null && (sender.isOp() || sender.hasPermission("sgs.sendmessage")) && args.length >= 3){
                // 判断是否后方文本包含空格内容,组合成一体消息
                String ZuHe_Commandtext = args[2];
                if(args.length > 3){
                    StringBuilder message = new StringBuilder();
                    for (int i = 0; i < args.length; i++) {
                        if(i >= 2){
                            message.append(" ").append(args[i]);
                        }
                    }
                    ZuHe_Commandtext = message.toString().trim();
                }
                Bukkit.getPlayer(args[1]).sendMessage(ZuHe_Commandtext);
                return true;
            }

            // 发送全体文本消息功能
            if(args[0].equals("broadcast") && (sender.isOp() || sender.hasPermission("sgs.broadcast")) && args.length >= 2){
                // 判断是否后方文本包含空格内容,组合成一体消息
                String ZuHe_Commandtext = args[1];
                if(args.length > 2){
                    StringBuilder message = new StringBuilder();
                    for (int i = 0; i < args.length; i++) {
                        if(i >= 1){
                            message.append(" ").append(args[i]);
                        }
                    }
                    ZuHe_Commandtext = message.toString().trim();
                }
                // 给全部玩家发送信息
                for (Player player : Bukkit.getOnlinePlayers()) {
                    player.sendMessage(ZuHe_Commandtext);
                }
                return true;
            }

            // 让蹦极端后台执行自定义命令
            if(args[0].equals("sendbccommand") || args[0].equals("sbcc")){
                if (!(sender instanceof Player)) {
                    sender.sendMessage("§c操作出现异常: §f此命令不可由后台执行");
                    return true;
                }
                if (args.length < 2) {
                    sender.sendMessage("§c操作出现异常: §f命令格式错误");
                    return true;
                }
                if (!sender.hasPermission("sgs.sendbccommand")) {
                    sender.sendMessage("§7缺少所需权限: §6sgs.sendbccommand");
                    return true;
                }
                // 判断是否后方命令内容包含空格内容,组合成一体消息
                String ZuHe_Commandtext = args[1];
                if(args.length > 2) {
                    StringBuilder message = new StringBuilder();
                    for (int i = 0; i < args.length; i++) {
                        if (i >= 1) {
                            message.append(" ").append(args[i]);
                        }
                    }
                    ZuHe_Commandtext = message.toString().trim();
                }
                BukkitNetWork.sendCustomData((Player) sender, "zxcommand", ZuHe_Commandtext);
                return true;
            }



        }
    return true;
    }
}
